﻿using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Telecom.Data;
using Telecom.Service;
using TelecomGis.Helper.Control;

namespace VNPT_BSC.Controllers
{
    [Authorize]
    public class MenuController : ContronllerBase
    {
        private readonly MenuSer _menuSer = new MenuSer();
        private readonly MainmenuSer _mainmenuSer = new MainmenuSer();
        //
        // GET: /Menu/

        public ActionResult GetMenuById(int menuId)
        {
            var _listEntity = _menuSer.GetById(menuId);
            var jsonResult = Json(_listEntity, JsonRequestBehavior.AllowGet);
            jsonResult.MaxJsonLength = int.MaxValue;
            return jsonResult;
        }


        public ActionResult MainMenu()
        {
            return PartialView("_MainMenu");
        }

        ////Jtable
        //[HttpPost]
        //public JsonResult mainmenuListJtable(int jtStartIndex = 0, int jtPageSize = 0, string jtSorting = null)
        //{
        //    var _listEntity = _mainmenuSer.getList();
        //    return Json(new { Result = "OK", Records = _listEntity, TotalRecordCount = _listEntity.Count }, JsonRequestBehavior.AllowGet);
        //}

        ////Jtable
        //[HttpPost]
        //public JsonResult child_mainmenuListJtable(int MMID)
        //{
        //    var _listEntity = _menuSer.getList(MMID);
        //    return Json(new { Result = "OK", Records = _listEntity, TotalRecordCount = _listEntity.Count }, JsonRequestBehavior.AllowGet);
        //}

        public string mainmenuList()
        {
            var _listEntity = _mainmenuSer.getList();
            return JsonConvert.SerializeObject(_listEntity, Formatting.Indented,
                              new JsonSerializerSettings
                              {
                                  ReferenceLoopHandling = ReferenceLoopHandling.Ignore
                              });

        }

        public string child_mainmenuList(int MMID)
        {
            var _listEntity = _menuSer.getList(MMID);
            return JsonConvert.SerializeObject(_listEntity, Formatting.Indented,
                              new JsonSerializerSettings
                              {
                                  ReferenceLoopHandling = ReferenceLoopHandling.Ignore
                              });

        }

        public ActionResult EditMainMenu(int MMID)
        {
            var entity = _mainmenuSer.GetById(MMID);
            return PartialView("_EditMainMenu", entity);
        }

        public ActionResult AddMainMenu()
        {
            var entity = new MAIN_MENU();
            entity.MMID = 0;
            entity.STT = 1;

            return PartialView("_EditMainMenu", entity);
        }

        [HttpPost]
        [ValidateInput(false)]
        public ActionResult AddUpdateMainMenu(MAIN_MENU model)
        {
            if (string.IsNullOrEmpty(model.TEN))
            {
                return JsonError("Vui lòng nhập tên menu");
            }

            if (model.STT == null)
            {
                return JsonError("Vui lòng nhập thứ tự của Menu");
            }

            if (!IsNumber(model.STT.ToString()))
            {
                return JsonError("Vui lòng nhập số thứ tự menu phải là số");
            }

            _mainmenuSer.addorUpdate(model);

            return JsonSuccess("");

        }

        public ActionResult DestroyMainMenu(string MMID)
        {
            try
            {
                _mainmenuSer.detele(int.Parse(MMID));

                return Json(true, JsonRequestBehavior.AllowGet);
            }
            catch { return Json(false, JsonRequestBehavior.AllowGet); }
        }

        public ActionResult EditChildMainMenu(int MID)
        {
            var entity = _menuSer.GetById(MID);
            return PartialView("_EditChildMainMenu", entity);
        }

        [HttpPost]
        [ValidateInput(false)]
        public ActionResult AddUpdateChildMainMenu(MENUS model)
        {

            if (model.MAINMENU == 0)
            {
                return JsonError("Vui lòng chọn menu");
            }


            if (string.IsNullOrEmpty(model.TEN))
            {
                return JsonError("Vui lòng nhập tên menu");
            }

            if (string.IsNullOrEmpty(model.CONTROLLERS))
            {
                return JsonError("Vui lòng nhập CONTROLLERS menu chức năng");
            }

            if (string.IsNullOrEmpty(model.VIEWS))
            {
                return JsonError("Vui lòng nhập tên VIEWS của menu chức năng");
            }

            if (model.STT == null)
            {
                return JsonError("Vui lòng nhập thứ tự của Menu");
            }

            if (!IsNumber(model.STT.ToString()))
            {
                return JsonError("Vui lòng nhập số thứ tự menu phải là số");
            }

            _menuSer.addorUpdate(model);

            return JsonSuccess("");

        }

        public ActionResult AddChildMainMenu(int MID)
        {
            var entity = new MENUS();
            entity.MENUID = 0;
            entity.MAINMENU = MID;
            entity.STT = 1;

            return PartialView("_EditChildMainMenu", entity);
        }

        public ActionResult DestroyChildMainMenu(string MID)
        {
            try
            {
                _menuSer.detele(int.Parse(MID));

                return Json(true, JsonRequestBehavior.AllowGet);
            }
            catch { return Json(false, JsonRequestBehavior.AllowGet); }
        }

    }
}
